编写高质量的 Objective-C 代码 第一章 熟悉 Objective-C
Feb 18, 2017
因为好久没写 OC 代码了,回头重看 《Effective Objective-C 编写高质量 iOS 与 OS X 代码的 52 个有效方法》,总结一些 OC 编码时的技巧。
1. 除非必要,否则不要引入头文件
一般来说,应再某个类的头文件中使用向前声明来提及某个类,并在实现文件(.m)中引入那些类的头文件,以降低类之间的耦合。
当无法使用向前声明时,比如要声明某个类遵循某个协议。在这种情况下,尽量把该类遵循某协议的声明移入class-continuation 分类中。如果不行的话,就把某协议单独放在一个头文件中,然后将其引入。
2. 尽量使用字面量创建数组、字典、字符串、数值
与常规方法相比更加简明。同时,如果值中有 nil,则会抛出异常,方便定位问题。而使用常规方法遇到 nil 会自动结束向集合添加数值。
3. 避免使用 #define 预处理命令定义常量
因为这样定义出来的常量不含类型信息,仅做预编译阶段的替换操作。无法利用编译器产生警告信息。
应该选择在实现文件中使用 static(定义作用域) const(readOnly) 来定义只在编译单元内可见的常量,此常量不在全局符号表中,无需加前缀。
如果需要定义全局常量,选择在头文件中使用 extern.并在相关实现文件中初始化其值,因为这种常量会出现再全局符号表中,所以应该加前缀,通常使用与之相关的类名做前缀。(OC 没有命名空间)。
4. 使用枚举表示状态、选项、状态码
应该使用枚举来表示状态机的状态、传递给方法的选择以及状态码等值,给这些值起个易懂的名字。
如果把传递给某个方法的选项用枚举表示,而多个选择又可以同时使用,那么就将各选项值定义为 2 的幂,以便通过按位或操作将其组合起来。
用 NS_ENUM 与 NS_OPTIONS 宏来定义枚举类型,并指明底层数据类型。
|
|